package com.atguigu.mybatis.mapper;

import com.atguigu.mybatis.pojo.Emp;
import com.atguigu.mybatis.pojo.EmpExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;

public interface EmpMapper {

    /*
    带有example,可以理解为根据条件来进行操作.
    可以通过example类生成各种条件拼接SQL
     */

    int countByExample(EmpExample example);

    int deleteByExample(EmpExample example);

    //和简洁版一样
    int deleteByPrimaryKey(Integer eid);
    /*和简洁版一样
    insert:会把record的全部属性值插入数据库,比如一个属性的值是null,
    该方法会把null赋值给相应字段
    insertSelective:只会将属性值不是空的属性赋值给相应字段
     */
    int insert(Emp record);

    int insertSelective(Emp record);

    List<Emp> selectByExample(EmpExample example);

    //和简洁版一样
    Emp selectByPrimaryKey(Integer eid);

    int updateByExampleSelective(@Param("record") Emp record, @Param("example") EmpExample example);

    int updateByExample(@Param("record") Emp record, @Param("example") EmpExample example);

    /*
    updateByPrimaryKey:会把record的全部属性赋值给数据库中相应的字段,
    如果属性值为null,该方法会把数据库中的对应字段置为null
    updateByPrimaryKeySelective:如果一个属性的值为null,该方法不会修改数据库中对应的字段

     */
    int updateByPrimaryKeySelective(Emp record);

    int updateByPrimaryKey(Emp record);
}